<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<!--
Not automatically generated, has been changed:
$Id: changelist26.htm,v 1.10 2012/04/15 14:13:14 wilbertd Exp $ 
-->
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <title>AviSynth 26 - Changelist</title>
   <link rel="stylesheet" type="text/css" href="../avisynth.css">
</head>
<body>

<h1>Changes.</h1>

<h2>Changes from 2.5</h2>

<h3>Additions</h3>
<ul>
  <li>Add DSS pixel_types: Y41P, Y411 or AYUV.</li>
  <li>Add Full and Auto pixel_types to AviSource. Auto: fY8 = fYV12 = fYUY2 =
    fRGB32 = fRGB24. FUll: fY8 = fYV12 = fYV16 = fYV24 = fYV411 = fYUY2 = fRGB32
    = fRGB24.</li>
  <li>Add &quot;AudioLengthS&quot;, &quot;Ord&quot; &amp;
        &quot;FillStr&quot; script functions.</li>
  <li>Add AudioTrim(clip, float, float) audio priority trimming, args in fractional seconds.</li>
  <li>Add Trim(M, Length=N[, Pad=False]) and Trim(M, End=N[, Pad=False]) function overloads
      for explicit Trimming. Length=0 means zero frame clip. End=0 means end at frame 0.</li>
  <li>Add SeparateRows (zero cost) and SeparateColumns (slow) frame slashing
    filters.</li>
  <li>Add Script Functions :- Acos, Asin, Atan, Atan2, Cosh, Sinh, Tanh, Fmod,
      Log10, BitLShift, BitRShiftS, BitRShiftU and Hex.</li>
  <li>Add "ConditionalSelect","csc+[show]b" runtime filter.</li>
  <li>Add dither option to Levels, RGBAdjust &amp; Tweak.</li>
  <li>Add BitAnd(), BitNot(), BitOr() &amp; BitXor() script functions.</li>
  <li>Add StrCmp() &amp; StrCmpI() script functions.</li>
  <li>Add YV24 support for Limiter show option.</li>
  <li>Add &quot;Global OPT_dwChannelMask={int}&quot;</li>
  <li>Add 0x0063F speaker mask for 7.1 WAVE_FORMAT_EXTENSIBLE.</li>
  <li>Add .dll DelayLoad exception texts to crash message formatter.</li>
  <li>ImageWriter, add support for printf formating of filename string, default is (&quot;%06d.%s&quot;, n, ext);</li>
  <li>Add avs_get_error(AVS_ScriptEnvironment*); to avisynth_c interface.</li>
  <li>Catch and save AvisynthError text in more avisynth_c entry points, for kemuri-_9.</li>
  <li>Add ScriptName(), ScriptFile(), ScriptDir() functions (WarpEnterprises).</li>
  <li>Add SkewRows filter.</li>
  <li>Histogram, Levels mode, Improve colour of chroma legends.</li>
  <li>ConditionalFilter, teach about string results.</li>
  <li>Add some more &quot;Add/Remove Software&quot; registry keys to the Installer (XhmikosR).</li>
  <li>AviSource: Support both packed and DWORD padded raw planar input like with DSS.</li>
  <li>Add IScriptEnvironment::ApplyMessage()</li>
  <li>Add ImageSourceAnim (Wilbert)</li>
  <li>Support user upgrade to 178 DevIL.dll (They need to manage CRT dependancies).</li>
  <li>ImageSource: palette and compressed bmp images load correctly now (issue 894702) [need 178 DevIL.dll]</li>
  <li>ImageSource: support for other formats like: gif, exr, jp2, psd, hdr [need 178 DevIL.dll]</li>
  <li>Add YV24 mode to ColorBars.</li>
  <li>Add ColorBarsHD based on arib_std_b28.</li>
  <li>C-api usability enhancements from kemuri9 [Work in progress!]</li>
  <li>Add Undefined(), AudioLengthLo(), AudioLengthHi(), IsYV16() &amp; IsYV24() script functions</li>
  <li>Allow newlines (and hence comments) before '{' -- Gavino</li>
  <li>Added IScriptEnvironment::DeleteScriptEnvironment()</li>
  <li>Added Histogram, population clamp&nbsp;% factor for &quot;Levels&quot; mode,</li>
  <li>Histogram, revert &quot;Stereo&quot; mode to YV12, Add &quot;StereoY8&quot; mode,</li>
  <li>AviSource: Support fourcc &quot;GREY&quot; as Y8</li>
  <li>Added support for argument passing and EAX return value to SoftwireHelper.</li>
  <li>Added &quot;Global OPT_VDubPlanarHack=True&quot; to flip YV24 and YV16 chroma planes for old VDub's.</li>
  <li>Added &quot;Global OPT_AVIPadScanlines=True&quot; option for DWORD aligned planar padding</li>
  <li>Added Matrix="AVERAGE" mode.</li>
  <li>Added ContinuedDenominator/ContinuedNumerator(f[]i[limit]i) script functions.</li>
  <li>Tweak: fix MaskPointResizing + put back Dividee ISSE code (use sse=true).</li>
  <li>Added ChromaInPlacement, ChromaOutPlacement and ChromaResample options to planar colour conversions.</li>
  <li>Added MaskHS.</li>
  <li>Source tweaks to get ready for VC8.</li>
  <li>Add Y8 for DevIL, planarize EBMP.</li>
  <li>Planar support for many filters.</li>
  <li>Added Info() time indicator on audio length and video (current frame &amp; total). (2.5.8)</li>
  <li>Added UtoY8 and VtoY8.</li>
  <li>Added more info to Info(). (2.5.8)</li>
  <li>ColorYUV: Added all adjustment parameters as conditional variables
    &quot;coloryuv_SETTING&quot;. Enable by setting conditional=true.</li>
  <li>ConditionalReader: Added support for type String.</li>
  <li>ConditionalReader: Added offset keyword to offset all frame numbers after the keyword.</li>
  <li>Added SincResize() with optional taps parameter (default is 4).</li>
  <li>Added Custom band setting to SuperEQ to allow all 16 bands to be set from
    script. Usage: SuperEQ(clip,band1, band2, band3....) values are dB in float.</li>
  <li>Added fast 0-1-0 kernel for YV24 to ConvertBacktoYUY2().</li>
  <li>Added core formats: YV24, YV16, Y8, YV411.</li>
</ul>

<h3>Bugfixes</h3>
<ul>
  <li>Fixed ImageReader upside down TIFF in 178 DevIL. Add DevIL version to
      messages, pad/crop images to match first frame with, deal with add 1 to
      IL_NUM_IMAGES bug (all ImageSourceAnim). (Wilbert)</li>
  <li>Fixed SaveString 'string+string' bug when total length is 4096*K-1, K is +int.</li>
  <li>Fixed SincResize misuse of "int abs(int)" (Gavino). Fix Lanczos and
      Blackman sinc use of float == 0.0, use small limit "&gt; 0.000001".</li>
  <li>Fixed Classic mode legend drawing for planar right limit and yuy2 centre line.</li>
  <li>Fixed possible MT race. Use "env-&gt;ManageCache(MC_IncVFBRefcount, ...)" in ProtectVFB.</li>
  <li>Fixed SwapYToUV output image size bug for 3 clip case.</li>
  <li>Fixed Crop limit tests for RGB.</li>
  <li>Fixed Overlay yellow tint on rec601 RGB import conversion.</li>
  <li>Fixed YtoUV() output image size bug for 3 clip case.</li>
  <li>Fixed ConvertToPlanar chroma alignment.</li>
  <li>Fixed Levels (RGB) change use of PixelClip(x) to min(max(x, 0), 255).</li>
  <li>Fixed SwapYtoUV yuy2 crash (StainlessS).</li>
  <li>Fixed Overlay saturate UV in add and subtract mode.</li>
  <li>Fixed Info.h range protect display characters (StainlessS).</li>
  <li>Fixed AviSource packed planar import chroma offsets.</li>
  <li>Fixed AviSource NULL GetWritePtr() failure due to premature setting of last_frame.</li>
  <li>Fixed Mask rounding in greyscale calcs (Wilbert), minor refactor.</li>
  <li>Fixed SelectRangeEvery audio snafu (Gavino).</li>
  <li>Fixed LoadPlugin, SaveString of result string.</li>
  <li>Fixed LoadPlugin, use _vsnprintf.</li>
  <li>Fixed LoadVirtualdubPlugin, don't add vdub filter to chain on load failure.</li>
  <li>Fixed rounding in RGB HResize (JoshyD) (affects all resizers)</li>
  <li>Fixed error message name in the filter VerticalReduceBy2</li>
  <li>Fixed SeparateFields() with variable parity input clip (Wilbert)</li>
  <li>Fixed AviSource, cannot cast__int64* to long*, it does not work!</li>
  <li>Fixed ConditionalReader: Don't allow out of range &quot;Range&quot; to overwrite edge values</li>
  <li>Fixed MonoToStereo with stereo sources.</li>
  <li>Fixed MergeChannels with only 1 input clip.</li>
  <li>Fixed AviSource support for negative height DIB format AVI's.</li>
  <li>Fixed Audio cache crashes.</li>
  <li>Fixed resize with YV411, missing code.</li>
  <li>Fixed ConditionalReader rounding with integer interpolation.</li>
  <li>Fixed Softwire SSE2 bugs.</li>
  <li>Fixed SSSE3 CPU detection.</li>
  <li>Fixed SSSE3, SSE4.1 &amp; SSE4.2 detection.</li>
  <li>Fixed Fastwire encoding of instructions that are &gt;2 opcodes (SSSE3+4).</li>
  <li>Fixed _RPT5() macro for debug builds</li>
</ul>

<h3>Optimizations</h3>
<ul>
  <li>Speedup ConvertToMono(), minor refactor MixAudio().</li>
  <li>Change StackVertical/Horizontal to interative instead of recursive, 2^N
      performace increase for 3 and more clips, i.e. 1 blit total instead of
      blit(blit(blit(...</li>
  <li>RGBtoY8 Dynamic ASM code, support for RGB24.</li>
  <li>YV24backtoYUY2 Dynamic ASM code.</li>
  <li>UtoY8, VtoY8 abuse subframe, zero cost.</li>
  <li>YV24<->RGB Add SSE2 and SSSE3 code paths, get rid of wide_enough.</li>
  <li>ConvertToYUY2 Add SSE2, MMX restore full speed on platforms with poor ooox.</li>
  <li>ConvertAudio, manage tempbuffer and floatbuffer independantly.</li>
  <li>ConvertAudio, prefer SSE2 over 3DNow for super AMD cores.</li>
  <li>Info.h, full refactor, a good example of "Never look down", thx StainlessS</li>
  <li>DoubleWeaveFrames, If A not writable, try to write to B, else make new frame</li>
  <li>Histogram, fix GetFrame/NewVideoFrame call order</li>
  <li>HResizer, interleave code +4% faster</li>
  <li>YtoUV() Abuse Subframe to snatch the Y plane / UV planes, Derestrict
    destination colorformat autogeneration.</li>
  <li>ImageSource: Improve thread interlock code</li>
  <li>ConditionalReader/WriteFile: Full refactor.</li>
  <li>Replace _strdup with SaveString in AddFunction (Thanks Gavino)</li>
  <li>SuperEQ: Improve channel unpacking/packing code.</li>
  <li>H-Resize: Use SSE4.1 (movntdqa) loads for use once memory access.</li>
  <li>H-Resize: Added SSE2 horizontal unpacker.</li>
  <li>Resize: Use SSE3 (lddqu) loads for unaligned memory access.</li>
  <li>Added ultra fast vertical PointResizer (64 pixel/cycle).</li>
  <li>Added dynamic SSSE3 vertical resizer (16 pixel/cycle) ~ twice as fast as old MMX.</li>
  <li>Added dynamic SSE2 vertical resizer (16 pixel/cycle).</li>
  <li>Added dynamic MMX vertical resizer (8 pixel/cycle).</li>
  <li>Added SSSE3 version for RGB&lt;-&gt;YV24 conversions.</li>
  <li>Added dynamic compiled MMX/iSSE for RGB&lt;-&gt;YV24 conversions. Speed is
    approx 200% of C-code.</li>
</ul>

<h3>Changes</h3>
<ul>
  <li>Initial 2.6 API entry point linkage.</li>
  <li>Use Invoke for graph tail, enhance non-clip output error reporting.</li>
  <li>PopContext when inner block Asserts/throws (maxxon).</li>
  <li>Remove duplicate definitions (Wilbert).</li>
  <li>Enhance non-clip output error reporting.</li>
  <li>Explicitly specify calling sequence as __cdecl for Avisynth softwire routines, (was the compiler default)</li>
  <li>Use env-&gt;Invoke("Cache", ...) everywhere instead of
      Cache::Create_Cache(), allows for Cache to be overloaded by a plugin.</li>
  <li>ConvertToYUY2 Change from 0-1-1 kernel to 1-2-1 kernel.</li>
  <li>Tweak make Interp same units as minSat and maxSat.</li>
  <li>Check HKEY_CURRENT_USER for PluginDir first. (henktiggelaar)</li>
  <li>Make forced, -ve, planar alignment of chroma planes match subsampling.</li>
  <li>Enforce planar alignment restrictions.</li>
  <li>C-api: Remove func sub-struct from AVS_Library struct</li>
  <li>Add error code to plugin load failure message</li>
  <li>Make default planar AVI output packed.</li>
  <li>WriteFile() now supports unlimited number of unlimited strings. (was 16 by 254 byte strings).</li>
  <li>ConvertToRGB*, make C++ code sample chroma the same as the MMX code i.e. use both pixels.</li>
  <li>ConvertToRGB*, use YV24 path for planar, complain when options are present for YUY2.</li>
  <li>ConvertToYUY2, use YV16 path for planar, complain when options are present for RGB
    <ul>
      <li>see: <a href="http://forum.doom9.org/showthread.php?p=1378381#post1378381"
	              class="external free"
				  title="http://forum.doom9.org/showthread.php?p=1378381#post1378381"
				  rel="nofollow">http://forum.doom9.org/showthread.php?p=1378381#post1378381</a></li>
    </ul>
  </li>
  <li>Thread safe code, part 2.</li>
  <li>Correct IClip baked documentation</li>
  <li>Fix at_exit executon order</li>
  <li>Passify compilation error/warnings (XhmikosR)</li>
  <li>for, const, extern and ansi patches for VC2008 (SEt)</li>
  <li>Disable OPT_RELS_LOGGING option</li>
  <li>Change implicit Last parsing for argless, bracketless calls to match
    bracketed cases. (Gavino) [<b>not documented yet&nbsp;???</b>]</li>
  <li>DirectShowSource: Support last minute format renegotiation thru
    IPin::QueryAccept() &amp; Validate the size of the provided directshow
    buffer.</li>
  <li>Remove non ascii chars from comments.</li>
  <li>Add core stubs for DirectShowSource, TCPServer &amp; TCPSource, report when plugins are missing.</li>
  <li>Add note for original source downloads - SoundTouch</li>
  <li>Add more lineage history to Info()</li>
  <li>Move convertaudio, alignplanar, fillborder &amp; MIN/MAX_INT definitions.</li>
  <li>Run AtExit before dismantling world.</li>
  <li>Change setcachehints definition from void to int. Test IClip version &gt;= 5.</li>
  <li>Move PixelClip definition to avisynth.cpp</li>
  <li>SubTitle, etc, make X &amp; Y options float (0.125 pixel granularity).</li>
  <li>ShowSMPTE() supports all integer FPS and multiplies of drop frame FPS.</li>
  <li>SubTitle, stop overwriting string constants (Gavino).</li>
  <li>SubTitle, improve pixel registration (Gavino).</li>
  <li>Make Info() CPU display hierarchical.</li>
  <li>Thread safe code, part 1.</li>
  <li>SoftwireHelper: explicit hardware exception handling.</li>
  <li>Resize: Moved GetResampleFunction into Resamplefuntion, to allow
    overrides.</li>
  <li>Resampler: Removed dead stlf code.</li>
  <li>Updated Soundtouch to 1.31 (2.5.8)</li>
  <li>Put dynamic matrix conversion into separate file.</li>
  <li>Moved chroma subsampling to image_type section.</li>
  <li>Added specific error reporting when requesting chromasubsampling with Y8.</li>
  <li>Split up merge and plane Swappers.</li>
  <li>Split up Plane transfers into separate classes.</li>
  <li>Added automatic destination colorspace detection on planar YtoUV.</li>
  <li>Took out greyscale and RGB32&lt;-&gt;RGB24 from convert.cpp and placed
    them in separate files.</li>
  <li>All code assuming UVwidth = Ywidth/2 and similar should be gone.</li>
</ul>
<p>Please report bugs at <a href="http://sourceforge.net/projects/avisynth2">Sourceforge 
  Avisynth 2 page</a> - or - <a href="http://forum.doom9.org/forumdisplay.php?s=&forumid=33">Doom9's 
  Avisynth forum</a> 
<p><kbd>$Date: 2012/04/15 14:13:14 $</kbd> 
</body>
</html>
